Client machines send a wide variety of requests to service providers. In some cases, an incoming request at the service provider may be handled by one of several servers operated by the service provider. Multiple requests from a given computing device, however, are often disadvantageously distributed amongst different servers. If requests from a client machine are sent to different servers, the state information associated with that client machine is migrated to other servers, consuming additional bandwidth and computational resources. Hash-based load balancing schemes have been proposed, however these schemes work as long as the number of servers is substantially static. In practice the number of servers may change. For example, under various prior art methodologies, when a server fails, the load from all clients is remapped, often unnecessarily.